﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using System.Web.Optimization;
using System.Web.Routing;

namespace LX.MVC.Open
{
    public class MvcApplication : System.Web.HttpApplication
    {
        /// <summary>
        /// Filter深入--AOP思想
        /// 基于AuthorizeAttribute实现了权限校验，AOP做法
        /// 1.Action注册，只队方法生效
        /// 2.控制器注册，控制器下全部Action都生效
        /// 3.全局注册
        /// 
        /// 自定义异常处理Filter--标记到方法--出现异常会进入Filter--完成善后处理
        /// 可以方法注册/控制器注册/全局注册
        /// 七大场景异常，Filter能否应对
        /// 1 Action出现异常，没有Catch      T
        /// 2 Action出现异常，但是被Catch    F  
        /// 3 Action调用的底层Service异常    T
        /// 4 Action正常，但是View里面有异常  T
        /// 5 控制器构造时出现异常            F
        /// 6 URL地址里面的错误的Action       F
        /// 7 404的任意地址异常               F
        ///
        /// Filter就是AOP的一种实现，权限Filter 异常Filter
        /// ActionFilter能做到方法执行前后 视图替换前后，加入逻辑
        ///传输数据流有压缩的需求 速度快 节约带宽
        ///压缩：浏览器请求时声明支持的压缩类型--服务器响应时就将数据压缩
        ///ActionFilter--判断压缩格式--Header指定压缩--配置压缩Filter
        ///CPU压力--量化（微乎其微）--一般应用服务器的CPU压力不大
        ///
        ///  MVC框架拓展订制完
        ///  课程第二节 第一讲开始
        ///  第五节 第二讲完
        ///  
        ///  
        /// 通用数据更新实现完 
        /// 
        ///  QQ57265177
        /// </summary>
        protected void Application_Start()
        {
            AreaRegistration.RegisterAllAreas();
            FilterConfig.RegisterGlobalFilters(GlobalFilters.Filters);
            RouteConfig.RegisterRoutes(RouteTable.Routes);
            BundleConfig.RegisterBundles(BundleTable.Bundles);
        }
        /// <summary>
        /// 全局异常处理，任何环节有异常没有处理，最后都会到这里
        /// </summary>
        /// <param name="sender"></param>
        /// <param name="e"></param>
        protected void Application_Error(object sender, EventArgs e)
        {
            var error = Server.GetLastError();
            string msg = error.Message;
            Server.ClearError();

        }

    }
}
